<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>定时器的任务编排</title>
</head>
<body>
    
</body>
<script>
    /*
        定时器我们再使用的时候 可以理解成浏览器其实是有一个定时器模块的  
            这个模块会会按照代码顺序从上到下来解析定时器 解析结束了之后再把这个定时器的任务放到宏任务队列里面
    */
    setTimeout(()=>{
        console.log('timeOut1')
    },2000)
    setTimeout(()=>{
        console.log('timeOut2')
    },1000)
    // 因为timeout2定时时长更短 多以它会被优先放入到任务队列中等待执行
    for(let i = 0;i<10000;i++){
        console.log(' ')
    }
    /*
        由以上的例子我们可以得出的结论由几点
            1.定时器的中代码的执行时间并不是全部由定时器设置的时间一样的 ，还要看主线程的任务执行的时间
                主线程任务执行结束了之后才会去执行任务队列里面的任务
            2.当主线程的执行时间超过定时器的时间时，主线程结束之后立马就会触发任务队列里面的任务
                也就是说 定时器的读秒是会立即执行的  只是读秒之后执行的任务会被放到任务队列里面
            3.定时器中放入任务队列的顺序并不是代码的执行顺序 
                是看定时器设置的时间的关系  会先将定时器定时结束的任务放到任务队列
    */
</script>
</html>